//配置路由用的类
import { createRouter, createWebHistory } from "vue-router"
import { baseViews,chatViews, } from './views'
import { message } from 'ant-design-vue';


//定义路由
const router = createRouter({
    history: createWebHistory('/'),//base//千万不能改
    routes: [
        ...chatViews, //“发现”标签栏下的根路由
        ...baseViews, //基本的根路由
    ],
    // @ts-ignore
    scrollBehavior:(to,from,savePosition)=>{
        if(savePosition){
            return savePosition
        }else{
            return {left:0,top:0}
        }
    },
});

//全局路由前置钩子
// @ts-ignore
router.beforeEach(async(to, from, next) => {
    //用户会话管理，强制使用token模式
    //console.log('to.path',to.path)
    if(to.path==='/'||to.path.indexOf('/error/')===0||to.path.indexOf('/login')===0){ next();return}
    //获取token
    const xToken = localStorage.getItem(import.meta.env.VITE_TOKEN_KEY)
    if(!xToken || xToken.length<1){
        message.error('您的登录状态已失效');
        next('/error/403')
        return
    }

    //页面keepalive缓存处理
    const {storeCacheView} = useStore() //路由守卫中操作状态管理数据，必须随用随取，即该工厂获取实现，必须写在守卫的事件方法内
    if(to.meta?.keepAlive){
        storeCacheView.addCachedView(to)
        //console.log('cachedViews', storeCacheView.cachedViews)
    }
    next();
})
// 全局路由后置钩子，这里可以加入改变页面标题等操作
// @ts-ignore
router.afterEach((to, from) => {
    //if(to.path!==from.path){close()}
    const prefix = import.meta.env.VITE_APP_NAME
    const _title: any = to.meta.title
    document.title = prefix + (_title? ' - '+ _title :'')
})
export default router